Support -gtk-icon-size for builtins
authorMatthias Clasen <mclasen@redhat.com>
Wed, 15 Nov 2017 13:11:01 +0000 (08:11 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 15 Nov 2017 19:22:17 +0000 (14:22 -0500)
This makes css icons more similar to themed icons, which
is the overall goal here.

gtk/gtkicon.c

index 5424e15ee2d05a426ad3d18da9e5ae5f65ab4936..8f08af6b8d092a47b980fd682e0693c3cbad9a1a 100644 (file)
@@ -21,6 +21,8 @@
 #include "config.h"
 
 #include "gtkcssnodeprivate.h"
+#include "gtkstylecontextprivate.h"
+#include "gtkcssnumbervalueprivate.h"
 #include "gtkiconprivate.h"
 #include "gtkwidgetprivate.h"
 #include "gtkrendericonprivate.h"
@@ -50,12 +52,28 @@ gtk_icon_snapshot (GtkWidget   *widget,
                                  self->image);
 }
 
+static void
+gtk_icon_measure (GtkWidget      *widget,
+                  GtkOrientation  orientation,
+                  int             for_size,
+                  int            *minimum,
+                  int            *natural,
+                  int            *minimum_baseline,
+                  int            *natural_baseline)
+{
+  GtkCssValue *icon_size;
+
+  icon_size = _gtk_style_context_peek_property (gtk_widget_get_style_context (widget), GTK_CSS_PROPERTY_ICON_SIZE);
+  *minimum = *natural = _gtk_css_number_value_get (icon_size, 100);
+}
+
 static void
 gtk_icon_class_init (GtkIconClass *klass)
 {
   GtkWidgetClass *wclass = GTK_WIDGET_CLASS (klass);
 
   wclass->snapshot = gtk_icon_snapshot;
+  wclass->measure = gtk_icon_measure;
 }
 
 static void